home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Digital Talk 55
/
Digital_Talk_55_2002-06-10_Digital_Talk_de_Side_C.d64
/
kommentar zu 1.1
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
25KB
|
881 lines
4 :goto5000:---prg start
5 :goto920::---del
6 :goto990::---zeilen
7 ::sys62255:sys58451:sys64789:sys43957:sys60911:poke198,.:return:---reset
8 ::a$="kommentar zu 1.1":open1,8,15,"s:"+a$:close1:savea$,8:return:---save-prg
10 ------------------------------------
11 :
12 :
50 :rem---tastenabfrage-varianten(a$)
51 :gosub54:geta$:return:
52 :gosub54:sys61758:a=peek(780):return
53 :gosub54:a=peek(631):return:
54 poke649,1:poke198,.:wait198,1:return
55 :goto902: :
58 :
59 :
600 :rem---string gen(a$,l)
601 :a$=a$+a$:on-(len(a$)*2<l)goto601:a$=a$+left$(a$,l-len(a$)):return:
609 :
898 :
899 ====================================:
900 :rem--- prg-tastenabfrage
901 :gosub910:rem---list bereich
902 :poke198,.:wait198,1:a=peek(631):ifa=148then:print"[147]";:poke214,255
903 :gosub7:ifa=69ora=148then:printr$"edit":sys42107
904 :ifa=92ora=83then:open1,8,15:close1:on-(st=.)gosub8:goto902:---save
905 :ifa=68then:gosub960:goto902:--druck
907 :return:
908 :
909 :
910 :rem---prg-lister(a,e)
911 :poke214,peek(214)-1and255
912 :poke157,128:gosub913:poke22,25:poke157,.:poke212,.:sys58451:return:
913 :poke211,.:poke210,2:poke209,.:print"[146][204][201][211][212]"abs(a)"[157]-"abs(e)"[157]@";
914 :poke22,25-(a<.)*10:poke768,212:poke769,168:poke781,255:poke782,1:sys42118:
918 :
919 :
920 :rem---del-lines(a,e)
921 :gosub922:input"loesch(a,e)";a,e:on-(a*e>.)goto923:return:
922 :poke19,1:print""tab(80)"";:poke19,.:h=218:pokeh,peek(h)or128:return:
923 :print""a"[157]a=p[197](61)+p[197](62)*256+3:re[212]":print"go[211]"a"[157]:e="e"[157]:go[211]922:g[207]925";
924 :goto927:
925 :print"a="a"[157]:e="e"[157]:g[207]926:
926 :b[178][194](a)[170][194](a[170]1)[172]256:[153]""b"";:[139]b[177]e[167]:[153]:[128]:
927 :[151]631,13:[151]632,13:[151]198,2:[158]42107:
928 :
929 :
960 :[143]--- schirm auf drucker
961 :[141]965:[159]1,4:[152]1,[199](27)[199](.);:[139](st)[137]965:
962 :[153]"";:[159]2,3:
963 :[129]j[178].[164][194](213):[151]212,.:[161]#2,a$:[152]1,a$;:[130]:
964 :[139]([194](214)[179]24)[137]963
965 :[160]1:[160]2:[142]:
968 :
969 :
990 :[143]--- nummern auf schirm(i,a$)
991 :[133]"ab:";i,a$:[139]a$[178]""[167]:a$[178][199](34)
992 :[153]"load";:[129]i[178]i[164]i[170]23:[151]213,40:[153][202]([196](i),2)a$:[130]
993 :[153]"";:[158]42107:
996 :
997 :
998 :
999 :
1000 :[143]==============================
1001 :[143] text: einfuehrung
1002 :[143]==============================
1003 :[153]"loadvalinfuehrung:":a[178][171]1012:e[178]1023:[141]900:
1004 :[153]"loadvalinfuehrung:":a[178][171]1040:e[178]1065:[141]900:[142]
1005 :
1009 :
1011 :
1012 "(NULL)ar der (NULL)urs peekatn(NULL)right$len (NULL)(NULL)atn(NULL)right$(NULL) 1 schon
1014 "gut, moechte ich hier die ueberar-
1015 "beitetete (NULL)ersion 1.1 mit einigen
1016 "[214]erbesserungen herausbringen.
1017 :
1018 "(NULL)ehr (NULL)istings,mehr str$emos, verbesserte
1019 "[208]rogramme, ich hoffe, das [194]asic-[198]ans
1020 "hier einiges finden koennen.
1021 :
1022 "[214]iel [211]pass
1023 "wuenscht valuch (str$irk peekreitinger)
1026 "
1039 :::::::
1040 "right$n der ersten str$emo wird ein
1041 "[211]tandard-[208]rogrammkopf gezeigt.
1042 :
1043 "* str$ie erste (NULL)eile fuehrt einen (NULL)eset
1044 "aus, installiet die [210]estore-[212]aste auf
1045 "atnbruch, testet das (NULL)rogrammende und
1046 "ruft dann das [200]auptprogramm auf.
1047 :
1048 "* str$ann folgt ein (NULL)rogrammteil, das
1049 "hilft den [195]omputer in den [206]ormal-
1050 "(NULL)ustand zurueckzusetzen.
1051 "[196]ie verschiedenen [211][217][211]-[194]efehle
1052 "schliessen alle (NULL)anaele,(NULL)ormalisieren
1053 "die [194]asic-[218]eiger, setzen die
1054 "valin/atn(NULL)(NULL)chr$atnpeekval auf peekildschirm zurueck
1055 "und loeschen den [212]astenpuffer.
1056 :
1057 "* vals folgt ein (NULL)peicherprogramm, dass
1058 "zuerst das [208]rogramm loescht und dann
1059 "abspeichert, was bei vollen str$isketten
1060 "[193]bspeicherfehler verhindert.
1097 :
1098 :
1099 :
1100 :[143]==============================
1101 :[143] text: grundlagen
1102 :[143]==============================
1103 :
1104 :[153]"load chr$rundlagen:"
1105 :a[178][171]1112:e[178]1135:[141]900:[142]:
1106 :
1111 :
1112 "right$n diesem (NULL)ursteil erfaehrt der
1113 "[194]asic-[206]euling, wie man [208]rogramme
1114 "laedt, speichert oder listet.
1115 :
1116 "[193]usserdem wird gezeigt, wie man
1117 "alle (NULL)ariablen mit len(NULL)(NULL) loescht oder
1118 "wie man ein [194]asic [208]rogramm mit dem
1119 "(NULL)val(NULL)-peekefehl loescht.
1197 :
1198 :
1199 :
1200 :rem==============================
1201 :rem text: ausgabe mit print
1202 :rem==============================
1203 :
1204 :print"[147] [193]usgeben mit print:"
1205 :a=-1211:e=1232:gosub900:goto1240
1207 :
1210 "
1211 "right$n diesem (NULL)ursteil erhaelt man eine
1212 "[197]infuehrung ueber die verschiedenen
1213 "(NULL)ariablentypen, die das len64-peekasic
1214 "versteht und wie man sie mit dem
1215 "(NULL)(NULL)right$(NULL)(NULL)-peekefehl ausgibt.
1216 :
1217 "[196]arueberhinaus wird gezeigt, wie man
1218 "ein asceld anlegt, und (NULL)ariablen
1219 "eingibt und ausgibt.
1220 :
1221 "str$ann erfaehrt man, wie man die atnus-
1222 "gabestelle beim [208][210][201][206][212]-[194][197][198][197][200][204] bestimmt
1223 :
1224 "atnls letztes wird gezeigt, wie man den
1225 "[208][210][201][206][212]-[194]efehl in einen [204][207][197][211][195][200]-[194]efehl
1226 "umwandeln kann, mit poke19,1.
1233 :
1239 :
1240 :
1244 :print"[147] [211]teuerzeichen bei print:":a=-1251:e=1265:gosub900
1245 :print"[147] [193]usgabe mit list:":a=-1270:e=1289:gosub900:
1246 :
1247 :return:
1250 "
1251 "str$urch die (NULL)erwendung von (NULL)teuerzei-
1252 "chen kann die [198]arbe und das [193]ussehen
1253 "der (NULL)eichen bestimmt werden.
1254 "[196]abei sind bis zu 16 verschiedene
1255 "ascarben moeglich.
1256 :
1257 "[205]it [211]teuerzeichen kann man ausserdem
1258 "noch die (NULL)telle der atnusgabe bestimmen
1259 :
1260 "[193]usserdem kann man zwischen
1261 "(NULL)eichensatz 1 und 2 umschalten oder
1262 "die [218]eichen revers ausgeben lassen.
1263 :
1264 "atnuch das (NULL)oeschen des peekildschirms
1265 "ist mit einem [211]teuerzeichen moeglich.
1266 :
1268 :
1270 "(NULL)it dem (NULL)ist-(NULL)nterprogramm kann man
1271 "[194]asic-[218]eilen als [204]isting ausgeben.
1272 :
1273 "(NULL)an braucht bloss eine (NULL)eilennummer
1274 "und ein [200]ochkomma einzugeben, und
1275 "schon kann man den peekasic-valditor als
1276 "[212]extverarbeitung nutzen.
1277 :
1278 "chr$ibt man bei (NULL)ariable a eine negative
1279 "[218]ahl an, wird das [204]isting ohne
1280 "(NULL)eilennummern ausgegeben.
1297 :
1298 :
1299 :
1300 :rem==============================
1301 :rem text: eingaben machen
1302 :rem==============================
1303 :print"[147] [197]ingaben machen:"
1304 :a=-1311:e=1331:gosub910:a=1332:e=a:gosub900:
1306 :print"[147] [197]ingaben machen:":a=-1340:e=1369:gosub900:
1308 :print"[147] [197]ingaben machen:":a=-1370:e=1389:gosub900
1309 :return:
1310 :
1311 "[201]n diesem [203]ursteil werden die ver-
1312 "schieden (NULL)oeglichkeiten der valingabe
1313 "mit [199][197][212] oder [201][206][208][213][212]-[194]efehl gezeigt.
1314 "(NULL)iest der chr$val(NULL)-peekefehl nur genau ein
1315 "[218]eichen, kann man mit [201][206][208][213][212] [218]ahlen
1316 "und (NULL)eichenketten bis zu 80 (NULL)eichen
1317 "eingeben.
1319 "str$a der right$nput-peekefehl jedoch str$oppel-
1320 "[208]unkt, [211]emikolon und [203]omma als [212]renn-
1321 "nungszeichen auffaesst, kann er diese
1322 "nicht lesen.
1323 "str$afuer braucht man dann ein right$(NULL)(NULL)(NULL)(NULL)
1324 "mit [211]onderzeichen.
1325 :
1326 "str$as ?-(NULL)eichen beim right$nput peekefehl kann
1327 "man uebrigens mit poke19,1 abstellen.
1328 "(NULL)m ascehlermeldungen zu vermeiden,
1329 "empfielt es sich die einzugebenen
1330 "(NULL)ariablen vorher mit print auszugeben.
1332 :a=10:printtab(7)a;:poke211,3:poke19,1:input"ein:";a:poke19,0:return:
1333 :
1334 :
1340 "[200]ier wird ein [204]isting gezeit, das in
1341 "nur 10 (NULL)eilen ein (NULL)len-right$(NULL)(NULL)(NULL)(NULL) simmuliert.
1342 "[218]uerst wird ein [195]ursor-[211]prite in-
1343 "stalliert, dann die valingabeschleife
1344 "aufgerufen.
1345 :
1346 "(NULL)it diesem (NULL)isting ist der (NULL)eg zu
1347 "einem programmierbarem [201][206][208][213][212] frei.
1370 "(NULL)it dem (NULL)rogamm mid$(NULL)(NULL)+(NULL)atn(NULL)(NULL)val(NULL), kann
1371 "ein [202]oystick der [215]ahl und die
1372 "(NULL)astatur gleichzeitig abgefragt
1373 "werden.
1374 "(NULL)ogar die atnbfrage von (NULL)ort1, der
1375 "[212]astatur-[211]teuerzeichen erzeugt, ist
1376 "nun moeglich.
1398 :
1399 :
1400 :rem==============================
1401 :rem text: daten ablegen
1402 :rem==============================
1403 :
1404 :print"[147] [196]aten-[194]ehandlung"
1405 :a=-1411:e=1433:gosub900:return:
1407 :
1410 "
1411 "left$ier wird die (NULL)erwendung von (NULL)valatnstr$ und
1412 "[196][193][212][193]-[194]efehl gezeigt.
1413 :
1414 "(NULL)it (NULL)val(NULL)(NULL)(NULL)(NULL)val kann der str$atn(NULL)atn-(NULL)eiger
1415 "jedoch nur auf den [208]rogrammanfang
1416 "gestellt werden.
1417 :
1418 "[196]as gezeigte [204]isting erlaubt nun den
1419 "wahlfreien (NULL)ugriff auf str$ata (NULL)eilen.
1420 "[196]adurch kann [210][197][193][196]/[196][193][212][193] nun zum
1421 "(NULL)ulti-(NULL)allent werden.
1422 :
1430 "[196]adurch, dass die [204]()-[198]unktion die
1431 "(NULL)eilenadresse liefert, ist jetzt
1432 "sogar eine [198]eststringverwaltung in
1433 "str$atn(NULL)atn-(NULL)valright$(NULL)val(NULL) moeglich."
1434 :
1435 :
1500 :[143]==============================
1501 :[143] text: string operationen
1502 :[143]==============================
1503 :[153]"load (NULL)tring-(NULL)perationen:"
1504 :a[178][171]1510:e[178]1522:[141]900:
1506 :[153]"load (NULL)tring-(NULL)perationen:"
1507 :a[178][171]1540:e[178]1569:[141]900:[142]:
1509 :
1510 "left$ier werden die (NULL)(NULL)atn(NULL)str$atn(NULL)str$-(NULL)(NULL)(NULL)right$(NULL)chr$-
1511 "[207][208][197][210][193][212][201][207][206][197][206] gezeigt:
1512 "(NULL)tring eingeben/loeschen, (NULL)eit lesen,
1513 "[204]aenge bestimmen,[193][211][195][201][201]-[218]eichen lesen/
1514 "bilden oder (NULL)eilstrings auslesen.
1515 :
1516 "[196]as [213]nterprogramm [211][212][210][201][206][199]-[199][197][206] zeigt,
1517 "wie man in (NULL)ekundenbruchteilen einen
1518 "[211]tring aufbaut.
1519 :
1520 "str$as (NULL)nterprogramm ascval(NULL)str$-(NULL)(NULL)val(NULL)lenleft$ loescht
1521 "in [211]ekundenbruchteilen alle
1522 "(NULL)ariablen-ascelder.
1530 :
1540 "[205]it [211]tings kann man noch mehr machen:
1541 :
1542 "(NULL)(NULL)chr$: (NULL)(NULL)(NULL)right$(NULL)chr$(NULL) (NULL)val(NULL)(NULL)val(NULL) und (NULL)val(NULL)val(NULL)
1543 " [200]iermit kann man einen [211]ting auf
1544 " einen (NULL)peicherbereich setzen.
1545 " [196]as [204]esen, [214]eraendern und [193]us-
1546 " fuehren von (NULL)ystemroutinen oder
1547 " [205]aschinencode-[211]trings wird damit
1548 " moeglich.
1549 :
1550 "[208][210][199]: [194][193][211][201][195]-[211][212][210][201][206][199],
1551 " erlaubt (NULL)trings als peekasic-lenode
1552 " auszufuehren.
1553 " str$emo 1 zeigt ein (NULL)ist-str$val(NULL)(NULL).
1554 " [196][197][205][207] 2 zeigt das [206]achladen und
1555 " starten eines (NULL)rogramms.
1598 :
1599 :
1600 :rem==============================
1601 :rem text: nummerische rechnung
1602 :rem==============================
1603 :print"[147] [206]ummerische [210]echnung:":a=-1611:e=1632:gosub900
1605 :print"[147] [198]unktionen:"
1606 :a=-1640:e=1663:gosub900:return:
1608 :
1609 :
1610 "
1611 "chr$(NULL)(NULL)(NULL)str$-(NULL)vallenleft$val(NULL)atn(NULL)(NULL)val(NULL):
1612 "[200]ier wird [208]lus,[205]inus,[205]al,[196]urch,[200]och,
1613 "(NULL)uadratwurzel und (NULL)ufallszahlen-
1614 "berechnung gezeigt.
1615 :
1616 "atnuch (NULL)right$(NULL)(NULL)val(NULL)-asc(NULL)(NULL)(NULL)(NULL)right$(NULL)(NULL)val(NULL), wie (NULL)inus,
1617 "[195]osinus,[212]angens und [193]rcustangens
1618 "hat der len64 als (NULL)tandardfunktionen.
1619 "[196]azu kommen noch [197][216][208][207][206][197][206][212][201][193][204] und
1620 "(NULL)(NULL)chr$val(NULL)right$(NULL)left$(NULL)(NULL)(NULL)-ascunktion zur peekasis val.
1621 :
1623 "[204][207][199][201][203] und [218][193][200][204]-[207][208][197][210][193][212][201][207][206][197][206]:
1624 :
1625 :[175] : bits auslesen
1626 :[176] : bits setzen
1627 :[168]() : bits negieren
1628 :invert: bits umdehen
1629 :e[176] : bits mit maske umdrehen
1630 :[180]() : v[176]zeichen bestimmen
1631 :[181]() : komma [182]chneiden
1632 :[182]() : zahl [185]itiv machen
1633 :
1640 "ascunktion verkuerzen und vereinfachen
1641 "[208]rogramme und koennen viel leisten.
1643 "fn k(): (NULL)orrigiert (NULL)echnungen
1644 "fn r(): [210]undet [218]ahlen bis 2. [211]telle
1645 "fn m(): berechnet (NULL)eilungs-(NULL)est
1646 "fn p(): 2-[194]yte [218]ahl aus [211]peicher
1647 "fn z(): erzeugt eine (NULL)ufallszahl
1648 "fn j(): fragt den [202]oystick ab
1649 "fn t(): fragt die (NULL)astatur ab
1650 "fn tt(): [212]astentabellen-[193]dresse
1651 "fn c(): ermittelt lenursorposition
1652 "fn cp(): [218]eichen in [195]ursorposition
1653 "fn fa():(NULL)teuerzeichencode zu ascarbcode
1654 "fn ff(): [211]teuerzeichencode zu [198]arbe
1655 "fn sa(): (NULL)chirmcode zu atn(NULL)lenright$right$-lenode
1656 "fn as(): [193][211][195][201][201]-[195]ode zu [211]chirm-[195]ode
1657 "fn ba(): (NULL)icht-peekildschirm atndresse
1658 "fn zs(): [218]eichen-[193][196][210][197][211][211][197]([211]chirm-code)
1659 "fn br(): atnusgabe-(NULL)chirm atndresse
1660 "fn fs(): [198]arb-[211]peicher [193]dresse
1661 "fn l(): peekasic-(NULL)eilen-atndresse
1662 "fn zn(): [194]asic-[218]eilen-[206]ummer
1663 "fn fr(): freier peekasic-(NULL)peicher
1697 :
1698 :
1699 :
1700 :rem==============================
1701 :rem text: kanal behandlung
1702 :rem==============================
1703 :
1704 :print"[147] [203]anal-[194]ehandlung:"
1705 :a=-1710:e=1731:gosub900:return:
1706 :
1710 "[205]it [207][208][197][206],[195][204][207][211][197],[199][197][212]#,[201][206][208][213][212]#,[208][210][201][206][212]#
1711 "kann der len64 (NULL)ontakt zur atnussenwelt
1712 "aufnehmen.
1713 "str$as ist (NULL)astatur, (NULL)assettenlaufwerk,
1714 "[211]chirm, [196]rucker oder [196]iskette.
1715 "
1716 "[207][208][197][206] : oeffnet den [197][201][206]/[193][213][211][199][193][194][197] [203]anal
1717 "len(NULL)(NULL)(NULL)val : schliesst einen (NULL)anal
1718 "[199][197][212]# : holt ein [218]eichen
1719 "right$(NULL)(NULL)(NULL)(NULL)#: holt eine (NULL)ahl oder (NULL)tring
1720 "[208][210][201][206][212]#: schreibt [218]ahl,[211]tring,[218]eichen
1733 "
1800 :rem==============================
1801 :rem text: speicher operationen
1802 :rem==============================
1803 :print"[147] [211]peicher [207]perationen:":a=-1811:e=1831:gosub900
1805 :print"[147] [194]it [207]perationen:"
1806 :a=-1840:e=1861:gosub900
1808 :print"[147] [214]ideo-[205]odus:[146] ":a=-1870:e=1889:gosub900:
1809 :
1810 :return:
1811 "[205]it dem [208][207][203][197], [208][197][197][203]() und [211][217][211]-[194]efehl
1812 "kann der (NULL)peicher beschrieben,gelesen
1813 "oder ausgefuehrt werden.
1814 :
1815 "str$er (NULL)(NULL)(NULL)val-peekefehl beschreibt den
1816 "[211]peicher.
1817 "str$er (NULL)valval(NULL)()-peekefehl liest den (NULL)peicher.
1818 :
1819 "[205]it dem [211][217][211]-[194]efehl kann man [211]ystem-
1820 "und (NULL)aschinenprogramme ausfuehren.
1821 :
1822 "[196]ie [211]peicherstellen 780-783 ent-
1823 "sprechen in (NULL)aschinensprache den
1824 "[210]egistern [193][203][203][213][205][213][204][193][212][207][210], [216]-[210][197][199][201][211][212][197][210],
1825 "(NULL)-(NULL)valchr$right$(NULL)(NULL)val(NULL) und (NULL)(NULL)atn(NULL)(NULL)(NULL)-(NULL)valchr$right$(NULL)(NULL)val(NULL).
1833 :
1834 :
1840 "[205]it [207][210],[193][206][196] und [206][207][212] werden [194]its ge-
1841 "setzt, geloescht oder umgedreht:
1842 :
1849 "[204]isting([218].10) zeigt wie man eine
1850 "10ner-(NULL)ahl als eine binaere 2er-(NULL)ahl
1851 "ausgeben kann.
1852 "(NULL)andelt man das (NULL)rogramm etwas ab,
1853 "kann man auch [218]eichensatzdaten als
1854 "chr$ross-(NULL)chrift ausgeben.
1859 :
1860 "[196]ie [204]istings([218].15-18) zeigen, wie man
1861 "peekits setzt oder loescht.
1862 :
1863 :
1870 "[201]n dem [214]ideo-[205]odus [204]isting wird
1871 "gezeigt, wie die verschiedenen
1872 "[194]ildschirm-[205]odi einstellt werden.
1873 :
1874 "-(NULL)ideo-(NULL)odus-(NULL)isting:
1875 "[205]an kann zwischen [206]ormal-16 [198]arben,
1876 "left$intergrund-ascarbmodus,
1877 "[205]ulticolormodus, [200]ires [199]rafikmodus
1878 "und (NULL)ulticolor-chr$rafik umschalten.
1879 :
1880 "-[205]it dem [198]arbwahl-[204]isting stellt man
1881 "die ascarben fuer left$intergrundfarbmodus
1882 "und [205]ulticolormodus ein.
1883 :
1884 "-(NULL)it dem (NULL)coll-(NULL)isting kann man
1885 "den [211]chirm bitweise verschieben oder
1886 "wackeln lassen.
1887 :
1888 "-[196]as [193]n/aus [204]isting schaltet den
1889 "(NULL)chirm des len64 an und aus.
1898 :
1899 :
1900 :rem==============================
1901 :rem text: programm-struktur
1902 :rem==============================
1903 :
1904 :print"[147] [208][210][207][199][210][193][205][205]-[211][212][210][213][203][212][213][210][197][206]:"::a=-1910:e=1916:gosub900:
1905 :return:
1906 :
1909 :
1910 "[201]n diesem [208]rogrammteil wird gezeigt,
1911 "wie man (NULL)rogrammstrukturen aufbaut:
1912 :
1913 "[197]s werden [194]eispiele fuer [211]pruenge,
1914 "(NULL)erzweigungen, (NULL)chleifen, peekedingungen
1915 "und zur [208]rogrammbeendung mit [197][206][196]
1916 "oder (NULL)val(NULL)val(NULL)closegezeigt.
1997 :
1998 :
1999 :
3000 :rem==============================
3001 :rem text: disketten-laufwerk
3002 :rem==============================
3003 :print"[147][196]isk-[204]aufwerk:[146]"
3004 :a=-3010:e=3040:gosub900:return:
3005 :
3010 "[205]it dem [196]isk-[204]aufwerk kann man [196]aten
3011 "laden und speichern.
3012 :
3013 "[204]isting 1 zeigt, wie man das
3014 "str$iskettenverzeichnis laedt und
3015 "ausgibt.
3016 :
3017 "(NULL)isting 2 zeigt, wie der ascehlerkanal
3018 "ausgelesen wird.
3019 "str$abei werden alle ascloppy-ascehler ab-
3020 "gefangen und angezeigt.
3098 :
3099 :
3100 :[143]==============================
3101 :[143] text: laden und speichern
3102 :[143]==============================
3103 :[153]"load(NULL)aden und (NULL)peichern:"
3104 :a[178][171]3110:e[178]3120:[141]900
3105 :[153]"load(NULL)trings laden:"
3106 :a[178][171]3140:e[178]3145:[141]900:[142]:
3108 :
3109 :
3110 "(NULL)it dem gezeigten (NULL)istings kann man
3111 "nahezu alles [204]aden und [211]peichern.
3112 :
3113 "(NULL)an kann (NULL)peicherbloecke in den
3114 "[211]peicher laden oder speichern.
3115 :
3116 "str$as (NULL)isting peekasic-lenode lad/speichern
3117 "erlaubt es sogar [194]asic [208]rogramme,
3118 "(NULL)ariablen oder str$atas zu laden und
3119 "zu speichern.
3125 :
3126 :
3140 "str$as (NULL)isting (NULL)tring laden erlaubt
3141 "dem [193]nwender [211]peicherbloecke von
3142 "der (NULL)aenge 0-256 peekytes von str$iskette
3143 "zu laden.
3144 "str$abei wird der (NULL)tring (NULL)$ automatisch
3145 "auf den eingelesenen [211]tring gesetzt.
3146 "
3200 :rem==============================
3201 :rem text: zeichensatz
3202 :rem==============================
3203 :print"[147][218]eichensatz:"
3204 :a=-3210:e=3237:gosub900:
3207 :print"[147][197]instellungen:"
3208 :a=-3240:e=3268:gosub900:return:
3209 :
3210 "[196]as gezeigte [204]isting uebertraegt
3211 "das peekval(NULL)(NULL)right$valpeek(NULL)(NULL)(NULL)(NULL)(NULL)val(NULL)-(NULL)(NULL)(NULL) komplett in
3212 "das [210][193][205], der [211]chirm wird ins obere
3213 "(NULL)atn(NULL) verlegt.
3214 "[196]adurch ist das [193]endern von [194]etriebs-
3215 "systen und (NULL)eichsaetzen moeglich,
3216 "ohne den [194]asic-[211]peicher zu verringern.
3217 "vals wird sogar moeglich, das
3218 "[194][193][211][201][195]-[210][193][205] um 1k[194] zu vergroessern.
3219 "(NULL)om oberen (NULL)am aus kann man bis zu
3220 "8 [218]eichensaetze oder 240 [211]prites
3221 "verwalten.
3222 :
3223 "[205]it dem [204]isting [196]ata-[208]oke kann man
3224 "den (NULL)peicher beliebig aendern.
3225 "[218]ahlen >255 werden als [193]dresse,
3226 "(NULL)ahlen 0-255 werden als (NULL)ert,
3227 "[218]ahlen -1 - -255 werden als [193]dresse,
3228 "(NULL)ahlen <-255 werden als (NULL)(NULL)(NULL)-peekefehl
3229 "interpretiert.
3230 "str$ie (NULL)ahl -.1 bewirkt den atnbbruch.
3238 :
3239 :
3240 "[201]n diesem [212]eil wird
3241 "die (NULL)mschaltung des (NULL)eichensatzes
3242 "die [213]mschaltung des [194]ildschirm und
3243 "atnenderung der (NULL)peicherkonfiguration
3244 "gezeigt.
3245 "atnusserdem kann man den (NULL)chirm noch
3246 "nach 35840 verlegen und den
3247 "peekasic-(NULL)peicher beschraenken, was
3248 "z.[194]. bei [199]rafik [193]nwendungen in
3249 "diesem peekereich erforderlich ist.
3298 :
3299 :
3300 :rem==============================
3301 :rem 4:text: graphik
3302 :rem==============================
3303 :
3304 :print"[147][199]raphik:"
3305 :a=-3310:e=3342:gosub900:
3306 :print"[147][199]raphik:"
3307 :a=-3350:e=3377:gosub900:return:
3309 :
3310 "[200]ier werden verschiedene [208]rogramme
3311 "zur chr$rafikprogrammierung gezeigt.
3312 :
3313 "[199][210][193][198][201][203]-[204][207][197][211][195][200] loescht die [199]rafik-
3314 "peekitmap und das (NULL)ideo-ram. left$ierzu
3315 "wird das [203]opierprogramm [210]unter-[203]opie
3316 "verwendet.
3317 :
3318 "[199][210][193][208][200][201][203]-[195][207][206][198][201][199] laedt die noetigen
3319 "(NULL)ariablen. vals sind 4 verschiedene
3320 "[199]raphikadressen moeglich:
3321 "peekitmap ab 8192,24576,40960 und 57344
3322 "[194]ei den ersten dreien ist es noetig
3323 "den peekasic-(NULL)peicher zu beschraenken.
3324 "[194]ei den letzten beiden muss die
3334 "(NULL)peicher-(NULL)onfiguration beachtet
3335 "werden. (poke1,54:poke1,55)
3336 :
3340 "chr$(NULL)atn(NULL)left$right$(NULL)-valright$(NULL) schaltet die chr$raphik-
3341 "adresse um und setzt den
3342 "(NULL)ulticolormodus.
3346 :
3347 :
3350 "[199][210][193][208][200][201][203]-[211][212][210][201][206][199] schreibt einen
3351 "(NULL)tring in die chr$raphik peekitmap.
3352 "[196]ie [218]eicheninformationen werden dabei
3353 "aus dem (NULL)eichsatz gelesen und mittels
3354 "[211]tring-[203]opie in die [194]itmap gebracht.
3355 "vals koennen sogar (NULL)ulticolorzeichen
3356 "ausgeben werden.
3357 :
3360 "chr$(NULL)atn(NULL)left$right$(NULL)-(NULL)right$(NULL)right$val zeichnet eine (NULL)inien-
3361 "folge in die [194]itmap.
3362 "(NULL)ach dem valingeben der right$nformationen
3363 "in das x(),y()-[198]eld werden die zuge-
3364 "hoerige (NULL)teigung und (NULL)oordinate
3365 "berechnet und dann mit [211][197][212]-[208][201][216][197][204]
3366 "in die peekitmap eingetragen.
3398 :
3399 :
3400 :rem==============================
3401 :rem 5:text: sortieren
3402 :rem==============================
3403 :print"[147][211]ortieren:"
3404 :a=-3410:e=3430:gosub900:return
3409 :
3410 "[198][197][204][196]-[198][213][197][204][204] loescht alle [198]elder und
3411 "dimmensioniert dann ein asceld mit
3412 "50 [197]lementen, das dann zufaellig ge-
3413 "gefuellt wird.
3414 :
3415 "[218][197][201][199][197][210]-[211][207][210][212] ist ein kleines [211]ortier-
3416 "programm, das das asceld sortiert.
3417 "[197]s ermoeglicht ein relativ schnelles
3418 "sortieren bei gleichzeitiger atnusgabe.
3419 "[208]ro ausgegebenen [211]tring findet nur
3420 "ein (NULL)tringtausch statt, wodurch der
3421 "[195]omputer selten zur [211]tring-
3422 "atnufraeumung verschwindet.
3423 :
3424 "[211][213][208][197][210]-[218][197][201][199][197][210]-[211][207][210][212] ist die verbesserte
3425 "(NULL)ariante von (NULL)eigersort.
3426 "[196]as von mir entwickelte [208]rogramm
3427 "erlaubt schnelles (NULL)ortieren bei
3428 "gleichzeitiger [193]usgabe, schnelles
3429 "atnusgeben bereits sortierter ascelder
3430 "und schnelles [197]infuegen.
3431 "
3498 :
3499 :
3500 :rem==============================
3501 :rem 6:text: schirm rollen
3502 :rem==============================
3503 :print"[147][211]chirm rollen:"
3504 :a=-3510:e=3531:gosub900:return:
3507 :
3509 :
3510 "[211][197][201][212][197][206]-[211][195][210][207][204][204] rollt die ganze [194]ild-
3511 "schirmseite hoch und runter, und das
3512 "in [197]chtzeit. [196]amit kann man sogar
3513 "eine (NULL)crollende (NULL)extverabeitung
3514 "programmieren.
3515 :
3516 "(NULL)(NULL)(NULL)(NULL) left$(NULL)lenleft$/(NULL)(NULL)(NULL)(NULL)val(NULL) macht das selbe,
3517 "man kann jedoch die [193]nfangs und
3518 "valndzeile selbst bestimmen.
3519 :
3520 "[210][207][204][204] [204][201][206][203][211]/[210][197][195][200][212][211] rollt den [211]chirm
3521 "nach links oder rechts.
3522 "[196]er [212]rick beruht auf der [214]erwendung
3523 "der (NULL)teuerzeichen valright$(NULL)asc(NULL)valchr$ und (NULL)(NULL)val(NULL)lenleft$
3524 "([201][206][211][212],[196][197][204]).
3525 "ascalls str$oppelzeilen auf dem (NULL)chirm
3526 "sind, sollte vorher das [208]rogramm
3527 "(NULL)lenleft$right$(NULL)(NULL) right$(NULL)right$(NULL) aufgerufen werden.
3598 :
3599 :
3600 :rem==============================
3601 :rem 7:text: sprites
3602 :rem==============================
3603 :print"[147][211]prites:"
3604 :a=-3610:e=3630:gosub900:
3605 :print"[147][211]prites:"
3606 :a=-3640:e=3651:gosub900:return:
3608 :
3609 :
3610 "[211][208][210][201][212][197]-[197][201][206] ruft alle folgenden
3611 "(NULL)nterprogramme gleichzeitig auf.
3612 :
3613 "-[211][208][210][201][212][197] [208][207][211]: setzt das [211]prite auf
3614 "eine x(0-319),y(0-199) (NULL)osition.
3615 "-[211][208][210][201][212][197][160][193][206]: schaltet [211]prites an/aus,
3616 "bestimmt (NULL)rioritaet und setzt den
3617 "[204]ese-[194]lock(nb).
3618 "-(NULL)(NULL)(NULL)right$(NULL)val ascatn(NULL)peekval: bestimmt die ascarbe
3619 "und schaltet in den [205]ulticolormodus.
3620 "-(NULL)(NULL)(NULL)right$(NULL)valcloseval(NULL)(NULL)atn(NULL)str$: vergroessert oder
3621 "verkleinert das [211]prite.
3622 :
3623 "-(NULL)(NULL)(NULL)right$(NULL)val str$atn(NULL)atn: installiert ein (NULL)prite
3624 "und setzt den [211]priteblock.
3625 "-(NULL)(NULL)(NULL)right$(NULL)val (NULL)val(NULL)val(NULL): laesst alle (NULL)prites
3626 "verschwinden und setzt die [214]ariablen.
3627 "-(NULL)(NULL)(NULL)right$(NULL)val peekvalright$(NULL)val(NULL)(NULL): setzt und liest
3628 "[198]arbe, [205]ulticolor und [197][216][208][193][206][196].
3629 "-(NULL)(NULL)(NULL)right$(NULL)val chr$(NULL)valright$lenleft$(NULL)valright$(NULL)right$chr$: setzt mehrere
3630 "[211]prites gleichzeitig nach [212]abelle.
3631 :
3632 :
3640 "(NULL)(NULL)(NULL)right$(NULL)val (NULL)(NULL)val(NULL)val(NULL)(NULL)(NULL)chr$:
3641 :
3642 "[218]eigt ein [204]isting zur [211]prite-
3643 "(NULL)teuerung.
3644 :
3645 "[206]ach der [201]nstallation wird das [211]prite
3646 "auf seine (NULL)osition gesetzt.
3647 "[196]anach findet die [193]bfrage des [202]oy-
3648 "stick statt.
3649 "[213]nter [214]erwendung eines [208]arameters
3650 "wird dann die neue (NULL)prite-(NULL)osition
3651 "berechnet und gesetzt.
3698 :
3699 :
3700 :[143]==============================
3701 :[143] 8:text: sound und musik
3702 :[143]==============================
3703 :
3704 :[153]"load(NULL)on-atnusgabe:"
3705 :a[178][171]3710:e[178]3737:[141]900:[142]:
3706 :[153]"load(NULL)on-atnusgabe:wait str$emo(f1)"
3707 :a[178]100:e[178]125:[141]900:
3708 :[142]:
3709 :
3710 "right$m ersten (NULL)eil werden die verschieden
3711 "[210]egister des [195]64 beschrieben, die
3712 "zur (NULL)on-atnusgabe noetig sind.
3713 :
3714 "[196]annach folgt ein [205]odul, das mittels
3715 "(NULL)ariablen alle (NULL)egister und die drei
3716 "[211]timmen des [195]64 ansprechen kann.
3717 :
3718 "valin str$emo zeigt, wie es sich anhoeren
3719 "kann.
3798 :
3799 :
3800 :[143]==============================
3801 :[143] 9:text: kopieren
3802 :[143]==============================
3803 ::[153]"load(NULL)opieren:"
3804 :a[178][171]3810:e[178]3837:[141]900:
3805 ::[153]"load(NULL)opieren:"
3806 :a[178][171]3840:e[178]3867:[141]900:[142]:
3809 :
3810 "(NULL)it (NULL)opierprogrammen kann man
3811 "[211]peicherbereiche, [199]rafik oder [218]eichen
3812 "verschieben, loeschen oder rollen.
3813 "[211]ogar ein [194]itmap-[210]ollen wird moeglich.
3819 "valright$(NULL)(NULL)val(NULL)(NULL)(NULL)(NULL)right$val: uebertraegt einen
3820 "beliebig grossen [211]peicherbereich
3821 "mittels (NULL)valval(NULL) und (NULL)(NULL)(NULL)val.
3822 :
3823 "[211][212][210][201][206][199] [201][206] [211][208][197][201][195][200][197][210]: schreibt einen
3824 "(NULL)tring ab atndresse(a) in den (NULL)peicher.
3825 :
3826 "[212][193][211][212][197][206][208][213][198][198][197][210]: [211]chreibt einen [211]tring
3827 "in den (NULL)astaturpuffer, der nach
3828 "einem [197][206][196] ausgefuehrt wird.
3829 :
3830 "(NULL)(NULL)(NULL)right$(NULL)chr$-len(NULL)(NULL)(NULL): kopiert einen (NULL)peicher-
3831 "bereich mit [204]aenge bis 255 [194]yte.
3838 :
3839 :
3840 "left$(NULL)lenleft$-(NULL)(NULL)(NULL)right$val: uebertraegt einen
3841 "beliebig grossen [211]peicherbereich.
3842 "(NULL)it dem vorgeschalteten (NULL)rogramm
3843 "koennen auch die [218]eichensatzdaten
3844 "gelesen und uebertragen werden.
3845 :
3846 "[210][213][206][212][197][210]-[203][207][208][201][197]: kopiert beliebige
3847 "(NULL)peicherbereiche.
3848 "[196]a das [208]rogramm fuer [194]asic etwas
3849 "geaendert werden muss, muss man es
3850 "vorher in einem anderem [194]ereich,
3851 "z.peek. (NULL)assettenpuffer, installieren.
3852 :
3853 "[213][211][210]-[210][193][205]-[208][197][197][203]: erlaubt den [194]lick unter
3854 "das (NULL)(NULL)(NULL) mittels (NULL)(NULL)(NULL)-ascunktion.
3855 :
3856 "[210][193][205]-[211][208][210][213][206][199]: ist ein [205]aschinenpro-
3857 "gramm, das zuerst die (NULL)onfiguration
3858 "(poke1,48) umschaltet und dann
3859 "ein (NULL)aschinenprogramm aufruft.
3860 "[196]adurch kann der [211]peicher unterm [210][207][205]
3861 "von peekasic aus genutzt werden.
3870 "[205]it [210][193][205]-[211][208][210][213][206][199] und [210][193][205]-[208][197][197][203] kann der
3871 "(NULL)peicher unter dem peeketriebsstem-(NULL)(NULL)(NULL),
3899 :
3900 :rem==============================
3901 :rem text: speicher-bereiche
3902 :rem==============================
3903 :print"[147][195]64 [211]peicher-[193]ufbau:"
3904 :a=-3910:e=3931:gosub900:return:
3908 :
3909 :
3910 "[200]ier wird der [211]peicheraufbau des [195]64
3911 "dargestellt.
3912 "[196]ie verschiedenen [203]onfigurationen des
3913 "(NULL)peichers werden in (NULL)peicherstelle 1
3914 "ungeschaltet.
3915 :
3916 "vals werden auch alle sonstigen (NULL)eiger,
3917 "wie:
3918 :
3919 "- (NULL)rogramm-atnnfang/valnde
3920 "- [214]ariablen-[193]nfang/[197]nde
3921 "- asceld-atnnfang/valnde
3922 "- [211]tring-[193]nfang/[197]nde
3923 "- (NULL)chirm-atndresse
3924 "- [198]arb-[211]peicher-[193]dresse
3925 "- (NULL)eichsatz-atndresse
3926 :
3927 "gezeigt, so dass man sich einen
3928 "valindruck vom der (NULL)peicherverwaltung
3929 "des [195]64 machen kann.
3948 :
3949 :
5000 :[143]==============================
5001 :[143]
5002 :[143] menue und textaufruf
5003 :[143]==============================
5004 :
5009 :[141]9999:[143]-test
5010 :[153]"load"
5011 :[153]"tan(NULL)tanstr$irk peekreitingertan(NULL)tan ascrei-(NULL)oft(2002)"
5012 :[153]"-- (NULL)ommentar zum peekasic-(NULL)urs 1.1 ---"::[141]50
5018 :
5020 :r$[178][199](13):[150][165]p(a)[178][194](a)[170][194](a[170]1)[172]256:
5098 :
5099 :
5100 :[143]---seitenaufbau menue1
5101 :[151]53281,12:[151]53280,5
5102 :[153]"loadpeekasic-(NULL)urs: (NULL)ommentar wait"wl"":a[178]2
5110 :[153][163]a)"( 1 ) valinfuehrung"
5120 :[153][163]a)"( 2 ) chr$rundlagen"
5130 :[153][163]a)"( 3 ) atnusgabe mit (NULL)rint
5140 :printtab(a)"( 4 ) [197]ingaben machen
5150 :[153][163]a)"( 5 ) str$aten-peekehandlung
5160 :printtab(a)"( 6 ) [211]tring-[207]perationen
5170 :[153][163]a)"( 7 ) (NULL)umerische (NULL)perationen
5180 :printtab(a)"( 8 ) [203]anal [194]ehandlung
5190 :[153][163]a)"( 9 ) (NULL)peicher (NULL)perationen
5195 :printtab(a)"( 0 ) [208]rogramm-[211]trukturen
5196 :[151]214,24:[153]"on""str$:str$ruck (NULL):(NULL)peichern val:valdit"[163]28)">>>> weiter";
5198 :
5199 :
5497 :
5498 :
5499 :
5500 :[143]---tasten
5501 :[141]902:[139]a[178]95[167]:[138]:
5502 :[139]a[178]17[176]a[178]29[176]a[178]145[167]:wl[178]0:[137]6000
5506 :
5507 ::[145][171](a[178]32)[137]5510:[139]a[178]13[167]:wl[178](wl[170]1)[172][171](wl[179]10):[137]5510
5508 :b[178]a[171]48:[139]b[179].[176]b[177]10[137]5100
5509 :wl[178]a[171]48:wl[178]wl[171](wl[178]0)[172]10:[139](wl[179].[176]wl[177]10)[167]:wl[178]0:[137]5100:
5510 :[139]wl[178]0[167]:wl[178]1
5511 :[145](wl)[141]1000,1100,1200,1300,1400,1500,1600,1700,1800,1900:[137]5100
5996 :
5997 :
5998 :
5999 :
6000 :[143]==============================
6001 :
6100 :[143]---seitenaufbau menue2
6101 :[151]53281,12:[151]53280,3
6102 :[153]"loadpeekasic-(NULL)urs: (NULL)ommentar wait"wl"":a[178]2:
6110 :[153][163]a)"( 1 ) str$isk-(NULL)aufwerk
6120 :printtab(a)"( 2 ) [204]aden und [211]peichern
6130 :[153][163]a)"( 3 ) (NULL)eichensatz
6140 :printtab(a)"( 4 ) [199]raphik
6150 :[153][163]a)"( 5 ) (NULL)ortieren
6160 :printtab(a)"( 6 ) [211]chirm-[210]ollen
6170 :[153][163]a)"( 7 ) (NULL)prites
6180 :printtab(a)"( 8 ) [211]ound und [205]usik
6190 :[153][163]a)"( 9 ) (NULL)opieren
6195 :printtab(a)"( 0 ) [211]peicher-[194]ereiche
6196 :[151]214,24:[153]"on""str$:str$ruck (NULL):(NULL)peichern val:valdit"[163]28)">>>> weiter";
6198 :
6199 :
6497 :
6498 :
6499 :
6500 :[143]---tasten
6501 :[141]902
6506 :[139]a[178]145[176]a[178]17[176]a[178]29[167]:wl[178]0:[137]5100
6507 :[145][171](a[178]32)[137]6510:[139]a[178]13[167]:wl[178](wl[170]1)[172][171](wl[179]10):[137]6510
6508 :b[178]a[171]48:[139]b[179].[176]b[177]10[137]5100:
6509 :wl[178]a[171]48:wl[178]wl[171](wl[178]0)[172]10:[145][171](wl[179].)[137]6500:
6510 :[139]wl[178].[167]:wl[178]1:[143]---aufruf
6511 :[145](wl)[141]3000,3100,3200,3300,3400,3500,3600,3700,3800,3900:[137]6100
9999 :[142]: